package city.spring.modules.oldman.vo;

import city.spring.modules.bed.entity.BedBuildingEntity;
import city.spring.modules.bed.entity.BedEntity;
import city.spring.modules.bed.entity.BedFloorEntity;
import city.spring.modules.bed.entity.BedRoomEntity;
import city.spring.modules.oldman.entity.OldmanBedEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 老人与床位信息联系 视图层数据
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class OldmanBedVO extends OldmanBedEntity {
    /**
     * 老人姓名
     */
    private String oldmanName;

    /**
     * 床位
     */
    private String bedNo;

    /**
     * 类别
     */
    private String feeType;


    /**
     * 床位价格
     */
    private BigDecimal bedPrice;

    /**
     * 床位优惠
     */
    private BigDecimal bedDiscount;

    /**
     * 入住时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date checkInTime;

    /**
     * 优惠月数
     */
    private Integer discountMonths;

    /**
     * 优惠期限(优惠到期时间)，这个日期前，不包括这天
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date discountPeriod;

    /**
     * 整体优惠： 用来判断优惠是否到期失效 小于0：未到期，有优惠  大于等于0：过期不优惠
     */
    private Integer isInvalid;
    /**
     * 个人优惠： 用来判断优惠是否到期失效 小于0：未到期，有优惠  大于等于0：过期不优惠
     */
    private Integer oneInvalid;

    /**
     * 优惠比例
     */
    private Double discountRatio;

    /**
     * 优惠金额
     */
    private BigDecimal discountMoeny;

    /**
     * 折后金额
     */
    private BigDecimal afterDiscount;

    /**
     * 优惠生效日期
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date discountStartDate;

    /**
     * 优惠失效日期
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date discountEndDate;

    /**
     * 优惠生效时间如20200521/20200623
     */
    private String effPeriod;

    private BedBuildingEntity building;
    private BedFloorEntity floor;
    private BedRoomEntity room;
    private BedEntity bed;

}
